// Variables (变量) 示例
// 演示 Pascal 中变量的声明、赋值和使用
program p_3_variables;

{$mode objfpc}{$H+}
// {$mode objfpc} 启用 Object Pascal 模式
// {$H+} 启用长字符串支持（AnsiString）

// 引入单元文件
uses
  SysUtils;  // 系统工具单元，包含常用的系统函数

// 变量声明部分
// 所有变量必须在使用前声明，并指定其数据类型
var
  // 整数类型变量
  counter: Integer;
  year: Integer;
  
  // 实数类型变量
  price: Real;
  temperature: Real;
  
  // 字符类型变量
  grade: Char;
  initial: Char;
  
  // 布尔类型变量
  isActive: Boolean;
  isFinished: Boolean;
  
  // 字符串类型变量
  firstName: String;
  lastName: String;
  fullName: String;

// 程序主入口
begin
  // 给整数变量赋值
  counter := 10;
  year := 2025;
  
  // 给实数变量赋值
  price := 99.99;
  temperature := 36.5;
  
  // 给字符变量赋值
  grade := 'A';
  initial := 'P';
  
  // 给布尔变量赋值
  isActive := True;
  isFinished := False;
  
  // 给字符串变量赋值
  firstName := 'John';
  lastName := 'Smith';
  fullName := firstName + ' ' + lastName;  // 字符串连接
  
  // 输出变量的值
  WriteLn('=== 整数变量 ===');
  WriteLn('计数器: ', counter);
  WriteLn('年份: ', year);
  
  WriteLn('=== 实数变量 ===');
  WriteLn('价格: ', price:0:2);  // 格式化输出，保留2位小数
  WriteLn('温度: ', temperature:0:1);  // 格式化输出，保留1位小数
  
  WriteLn('=== 字符变量 ===');
  WriteLn('等级: ', grade);
  WriteLn('首字母: ', initial);
  
  WriteLn('=== 布尔变量 ===');
  WriteLn('是否激活: ', isActive);
  WriteLn('是否完成: ', isFinished);
  
  WriteLn('=== 字符串变量 ===');
  WriteLn('名字: ', firstName);
  WriteLn('姓氏: ', lastName);
  WriteLn('全名: ', fullName);
  
  WriteLn;
  WriteLn('演示了 Pascal 中变量的声明、赋值和使用');
  
  // 修改变量的值
  counter := counter + 5;
  WriteLn('增加后的计数器: ', counter);
  
  // 等待用户按键，防止程序窗口立即关闭
  ReadLn;
end.